from flask import Flask, render_template, redirect

app = Flask(__name__)


"""
带参数的装饰器
    1. 执行 f = app.route('/')
    2. 
        @f
        def home():
            pass
    
    3. 路由的两种写法
        @app.route("/")
        def home():
            return redirect("/login")

    等价于

        def home():
            return redirect("/login")
        # 路由、别名、函数名
        app.add_url_rule('/', '/', home)
"""


# 等价于


@app.route("/")
def home():
    return redirect("/login")


@app.route("/login")
def login():
    return render_template("login.html")


@app.route("/index")
def index():
    return render_template("index.html")


if __name__ == "__main__":
    app.run()


"""
动态路由【路由中传值】
    1.  @app.route("/index")
        def index():
            pass
        
    2.  @app.route("/index/<name>")
        def index(name):
            pass

    3.  @app.route("/index/<int:nid>")
        def index(nid):
            pass
"""


"""
路由加载的源码流程
    1. 将url和函数打包成为rule对象
    2. 将rule对象添加到map对象中
    3. app.url_map = map 对象
"""
